Current Code Excited Linear Prediction (CELP) type speech coders utilize a code-book memory of excitation code book vectors and generally compute an error sequence, for example e.sub.i (n), where: EQU e.sub.i (n)=s(n)-s.sub.i (n), n=1, . . . ,N; i=1, . . . ,I
where s(n) is the input speech signal, s.sub.i (n) is the reconstructed speech signal corresponding to the codebook entry i, and N is a positive integer that specifies a number of samples that constitute a subframe. I typically specifies the number of entries in an excitation codebook. One criterion for selecting the best matching codebook entry is to select a vector s'.sub.i (n), which minimizes an error energy over an N point subframe, i.e., ##EQU1## Thus, if s'.sub.K (n) is a vector that minimizes the error energy equation, the coder parameters used to generate it are transmitted to the receiver.
Typically, however, e(n) is passed through a spectral weighting filter prior to the error energy calculation. A spectral weighting filter seeks to equalize a signal-to-noise (SNR) ratio along a frequency axis by allowing more noise in the high energy regions of the spectrum, where the noise is masked by signal energy, and by allowing less noise in the spectral valleys. The spectral weighting filter, as known in the art, is derived from linear predictive coding (LPC) parameters that model the resonance characteristics of the vocal tract, or the spectral envelope. The spectral envelope is a slowly varying function of frequency that is characterized by short-term signal correlation. Typically, such a noise weighting filter is defined by transfer function H(z), where: ##EQU2##
Commonly used values for the noise weighting constant are 0.7&lt;.alpha.&lt;0.9. a.sub.i are the direct form LPC filter coefficients, where N.sub.p is the order of the filter. Each error vector e.sub.i (n) is then spectrally weighted to yield e.sub.is (n). In the z transform notation, E.sub.is (z)=H(z)E.sub.i (z) . The error energy is calculated as before, except that the spectrally weighted error vector e.sub.is is used: ##EQU3## The vector s'.sub.i (n) that minimizes the spectrally weighted error over all I indices is then selected as the best one, and the parameters specifying it are transmitted to a receiver.
In the frequency domain, signal periodicity contributes peaks at the fundamental frequency and at the multiples of that frequency, i.e., harmonics of the fundamental frequency. There is a need for an improved noise weighting method that substantially de-emphasizes the importance of quantization noise in the vicinity of harmonics while increasing the noise penalty in troughs between the harmonics.